package cn.iocoder.yudao.framework.common.exception.enums;

import cn.iocoder.yudao.framework.common.exception.Assertions;

/**
 * FIXME 重构
 * <pre>
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * 业务异常的错误码区间，用于解决各模块错误码定义，避免重复，在此只声明不做实际使用
 * 一共 10 位，分成四段，说明如下：
 * 第一段，1 位，表示业务类型：1 表示业务级别异常，x 预留。
 * 第二段，3 位，表示大模块类型：001 表示基础设施，002 表示系统模块，xxx 表示 xxx 模块。
 * 第三段，3 位，表示小模块类型，每个大模块里面可能有多个小的功能模块，可以再去做分段，以用户模块为例子：
 * 001 表示 OAuth2 模块，002 表示 User 模块，003 表示 MobileCode 模块。
 * 第四段，3 位，表示错误码，一般建议每个模块自增。
 * OOoO0OOoO0OOOooo0oOOOO0OOOOO0oooOO0ooOOO0Ooooo0OOOOo0ooooO0OOooo0Ooooo0OOOOO
 * </pre>
 *
 * @author 芋道源码
 * @author 山野羡民（1032694760@qq.com）
 * @since 2024/11/18
 * @see Assertions 优先使用断言代替错误码
 */
public interface ServiceErrorCodeRange {
    // 未归类的业务异常
    int BIZ_EXCEPTION = 2024500;
    // 模块 universal 错误码区间       [1000000000 ~ 1001000000)
    int UNIVERSAL = 1000000000;
    // 模块 infra 错误码区间           [1001000000 ~ 1002000000)
    int INFRA = 1001000000;
    // 模块 infrastructure 错误码区间          [1002000000 ~ 1003000000)
    int SYSTEM = 1002000000;
    // 模块 report 错误码区间          [1003000000 ~ 1004000000)
    int REPORT = 1003000000;
    // 模块 member 错误码区间          [1004000000 ~ 1005000000)
    int MEMBER = 1004000000;
    // 模块 shop 错误码区间            [1005000000 ~ 1006000000)
    int SHOP = 1005000000;
    // 模块 mp 错误码区间              [1006000000 ~ 1007000000)
    int MP = 1006000000;
    // 模块 pay 错误码区间             [1007000000 ~ 1008000000)
    int PAY = 1007000000;
    // 模块 product 错误码区间         [1008000000 ~ 1009000000)
    int PRODUCT = 1008000000;
    // 模块 bpm 错误码区间             [1009000000 ~ 1010000000)
    int BPM = 1009000000;
    // 模块 vlog 错误码区间            [1010000000 ~ 1011000000)
    int VLOG = 1010000000;
    // 模块 trade 错误码区间           [1011000000 ~ 1012000000)
    int TRADE = 1011000000;
    int TRADE_GROUPON = TRADE + 10000;
    // 模块 dss 错误码区间             [1012000000 ~ 1013000000)
    int DSS = 1012000000;
    // 模块 promotion 错误码区间       [1013000000 ~ 1014000000)
    int PROMOTION = 1013000000;
    int PROMOTION_SECKILL = PROMOTION + 8000;
    int PROMOTION_COMBINATION = PROMOTION + 10000;
    // 模块 cms 错误码区间             [1014000000 ~ 1015000000)
    int CMS = 1014000000;
    // 模块 solution 错误码区间        [1015000000 ~ 1016000000)
    int SOLUTION = 1015000000;
    // 模块 farm 错误码区间            [1016000000 ~ 1017000000)
    int FARM = 1016000000;
    // 模块 brokerage 错误码区间       [1017000000 ~ 1018000000)
    int BROKERAGE = 1017000000;
    // 模块 ??? 错误码区间             [1018000000 ~ 1019000000)
    int RESERVE2 = 1018000000;
    // 模块 ??? 错误码区间             [1019000000 ~ 1020000000)
    int RESERVE3 = 1019000000;
    // 模块 crm 错误码区间             [1020000000 ~ 1021000000)
    int CRM = 1020000000;
    // 模块 ??? 错误码区间             [1021000000 ~ 1022000000)
    int RESERVE4 = 1021000000;
    // 模块 ai 错误码区间              [1022000000 ~ 1023000000)
    int AI = 1022000000;
    // 模块 erp 错误码区间             [1030000000 ~ 1031000000)
    int ERP = 1030000000;
    // 模块 im 错误码区间              [1040000000 ~ 1041000000)
    int IM = 1040000000;

}
